The real-time encoding of video data is computationally VERY demanding and requires a significant amount of memory and computational resources.
Video encoding using parallel and distributed systems has been used in the past for MPEG-1 and MPEG-2 systems in several instances. One of the most notable cases is the Parallel Berkeley Encoder Project. The goal of this project was to accelerate the video encoding process by parallelizing video sequences in the temporal direction. The Parallel Berkeley Encoder Project utilizes a dynamic scheduling scheme that allocates a number of frames to each processor based on a complexity measurement. As imbalances are found in the complexity measurement and during encoding, new workload allocations are calculated for future sequences to be encoded.
However, video encoding using parallel and distributed systems is not without deficiency. Accordingly, it would be desirable and highly advantageous to have a method and apparatus for real time parallel video encoding that addresses a problem of scheduling temporal sequences of video for real-time encoding, for example with the JVT/H.264/MPEG-4 AVC (“JVT”) standard, onto a parallel architecture such that encoding times are consistent. Moreover, it would be desirable and highly advantageous to have a method and apparatus for real time parallel video encoding that addresses another problem of maintaining accurate rate control with respect to multiple instances of parallel video encoders. Further, it would be desirable and highly advantageous to have a method and apparatus that addresses yet another problem of real-time encoding on a multi-processor PC platform.